package com.zyf.chapter02.behavior.chain.framework.spring;

import java.util.ArrayList;
import java.util.List;

/**
 * Spring 处理器的简单调用-组合类
 * @author yifeng
 */
public class HandlerChain {
    private List<IHandler> handlers = new ArrayList<>();

    public void addHandler(IHandler handler) {
        this.handlers.add(handler);
    }

    /**
     * 链中的所有处理器都要执行
     */
    public void handle() {
        for (IHandler handler : handlers) {
            // 简单的将三个方法全都调用一遍
            boolean result = handler.preHandler();
            handler.postHandler(result);
            handler.triggerAfterCompletion();
            // 如果处理器返回 false，则不继续往下调用
            if (!result) {
                return;
            }
        }
    }
}
